PromQL 引擎會將 PromQL 語句解析成一個抽象語法樹(AST)。再結合 storage 執行。
由於 Prometheus 的資料都是分時間區段,所以第一步就是找到 /query_range
所關心的時間區段資料。(可能抱括多個時間區段檔案)
找到檔案後,PromQL 引擎就會載入需要的時間序列集。
PromQL 引擎運算時會遍歷語法樹,當走到需要時序資料的節點時,就會去 storage 中取得資料。storage 會先透過 index,找到所有對應的時間序列,給出 SeriesSet
型態。SeriesSet
包函 Series
介面。Series
可以從指定的時間區段中,給出各樣本值的迭代器。迭代器的實作方式即是載入時間序列檔後,找到對應的時間序列,並從頭解壓縮。